// {}作用域
console.log(num) // undefined
{
  var num = 10
  let n = 20
}
console.log(num) // 10
// console.log(n) // n is not defined

if (0) {
  var m = 100
}
console.log(m) // undefined

// 局部作用域，全局作用域
for (let i = 0; i > 10; i++) {
  var k = 200
}
console.log(k) // 200 或 i > 10时 undefined

// 函数中声明的变量
function fn(a, b) {
  var j = 300 // 函数中的变量是局部作用域，不能在函数外使用，没有作用域提升，哪怕是var声明
  return a + b
}
fn(1, 2)
console.log(j) // j is not defined

/*
  结论：
  1 js中没有块级作用域
  2 函数中定义变量不存在变量作用域提升，只能在函数内使用
*/
